/** Copyright 2020 Tianshu AI Platform. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * =============================================================
 */

export default {
  bind(el, binding) {
    const { value } = binding;
    let mouseWheelDown;
    let mouseWheelUp;
    if (typeof value === 'function') {
      mouseWheelDown = value;
    } else if (typeof value === 'object' && value !== null) {
      mouseWheelDown = value.down;
      mouseWheelUp = value.up;
    }
    // eslint-disable-next-line func-names
    el.addEventListener('mousewheel', function(event) {
      const downAvaliable =
        this.scrollHeight === this.clientHeight ||
        this.scrollHeight - this.scrollTop <= this.clientHeight + 10;
      const upAvaliable = this.scrollHeight === this.clientHeight || this.scrollTop <= 10;
      if (downAvaliable && event.deltaY > 0 && mouseWheelDown) {
        mouseWheelDown();
      }
      if (upAvaliable && event.deltaY < 0 && mouseWheelUp) {
        mouseWheelUp();
      }
    });
  },
};
